package es.deusto.ingenieria.is.gemas;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import es.deusto.ingenieria.is.csp.formulation.Constraint;
import es.deusto.ingenieria.is.csp.formulation.Variable;


public class SumaIgual extends Constraint<Gema>{

	public SumaIgual(String name, List<Variable<Gema>> variables) {
		super(name, variables);
	
	}

	@Override
	public boolean isSatisfied(Variable<Gema> arg0, Gema arg1) {
		List<Ranura> ranura = Ranura.getRanuras();
		int valor = 0;
		List<Integer> valores = new ArrayList<Integer>(3);
		for (int i = 0; i < ranura.size(); i++) {
			if(ranura.get(i) == arg0) {
				valor += arg1.getWeight();
			} else if (ranura.get(i).getValue() == null) {
				return true;
			} else {
				if (ranura.get(i).getValue() == arg1) {
					return false;
				}
				valor += ranura.get(i).getValue().getWeight();
			}
			if ((i + 1) % 4 == 0) {
				valores.add(valor);
				valor = 0;
			}
		}

		valor = valores.get(0);
		for (int i = 1; i < valores.size(); i++) {
			if (valores.get(i) != valor) {
				return false;
			}
		}
		return true;
	}

}
